/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package puertocom;

import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import java.util.logging.Level;
import java.util.logging.Logger;
   
public class PuertoCOM {  
    private CommPortIdentifier identificadorPuerto = null;
    private SerialPort puertoSerial = null;
    
    public void close()
    {   
        if (puertoSerial != null)
        {
            Receptor.continuarLectura = false;

            Receptor.closeInputStream();
            puertoSerial.close();

            puertoSerial = null;
            Emisor.closeOutputStream();
        }
    }
    
    public void connect(String portName) throws Exception {  
        try
        {
        identificadorPuerto = CommPortIdentifier.getPortIdentifier(portName);  
   
        if (identificadorPuerto.isCurrentlyOwned()) {  
            System.out.println("Puerto en uso!");  
        } else {  
            // indica un identificador para el puerto y un tiempo de timeout (tiempo que espera a recibir los datos)
            puertoSerial = (SerialPort) identificadorPuerto.open("RS232Chat", 2000);  
              
            // Coloca  los parametros de conexion, como la velocidad en baudios, los bits a transferir, bits de parada y la paridad
            puertoSerial.setSerialPortParams(  
                38400, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);  
   
            // Establece el flujo de salida (para escribir datos)
            Emisor.setWriterStream(puertoSerial.getOutputStream());  
            
            // Establece el lector de flujos (lee datos)
            Receptor.continuarLectura = true;
            Receptor portReader = new Receptor(puertoSerial.getInputStream());
            portReader.start();  
        }
        } catch (gnu.io.NoSuchPortException e)
        {
            System.err.println("No se encuentra el puerto: " + portName);
        }
    }
    static public void main(String args[])
    {
        PuertoCOM soft = new PuertoCOM();
        try {
            soft.connect("COM1");
        } catch (Exception ex) {
            Logger.getLogger(PuertoCOM.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
}  